package com.asa.a;

/**
 * JVM结构
 * @author Administrator
 *
 *	我可以考虑重写java编译器，搞一门自己的语言，反正可以编译成class字节码让虚拟机运行
 *
 */
public class B {

	/**
	 * 
	 * HotSpot VM是目前市面.上高性能虚拟机的代表作之一。
	它采用解释器与即时编译器并存的架构。
	在今天，Java程序的运行性能早已脱胎换骨，已经达到了可以和C/C++程序一较高下的地步。
	 * 
	 * 
	 * 
	 * 
	 * Java编译器输入的指令流基本上是一种基于栈的指令集架构，另外一 种指令集架构则是基于寄存器的指令集架构。
		具体来说:这两种架构之间的区别:
		●基于栈式架构的特点
		➢设计和实现更简单，适用于资源受限的系统;
		➢避开了寄存器的分配难题:使用零地址指令方式分配。
		➢指令流中的指令大部分是零地址指令，其执行过程依赖于操作栈。指令集更小，
		编译器容易实现。
		➢不需要硬件支持，可移植性更好，更好实现跨平台
		●基于寄存器架构的特点
		➢典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虛拟机。
		➢指令集架构则完全依赖硬件，可移植性差
		➢性能优秀和执行更高效:
		➢花费更少的指令去完成-一项操作。
		➢在大部分情况下，基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主，而基于栈式架构的指令集却是以零地址指令为主。
		上面这两个有点不像人话，我补充一下，基于栈式架构它是在内存中搞定的，而且不占用过多内存，因为是栈结构它只处理栈顶，这样其实优化不好做，所以指令多，但指令小8位的
	 * 	寄存器架构则不一样，它占用内存多它和机器语言耦合度高，但它的运行效率好些，它指令少，但指令被优化大了16位的
	 * 基于栈的，跨平台性好，支持机器比较差的也好，虽然总体性能差一点
	 * 
	 * 
	 * 总结:
			由于跨平台性的设计，Java的指令都是根据栈来设计的。不同平台CPU架构不
			同，所以不能设计为基于寄存器的。优点是跨平台， 指令集小，编译器容易
			实现，缺点是性能下降，实现同样的功能需要更多的指令。
			时至今日，尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应
			该是HotspotVM的宿主环境已经不局限于嵌入式平台了)，那么为什么不将
			架构更换为基于寄存器的架构呢?|
			栈:
			跨平台性、指令集小、指令多;执行性能比寄存器差

	 * 
	 * 
	 * 
	 * 
	 * 
	 */
	
	
}
